package jmovie;

import java.util.HashMap;

public class Film implements Comparable<Film> {

	/** attributi di un oggetto di tipo film */
	public static final String TITOLO 			= "Titolo";
	public static final String TITOLO_ORIGINALE = "Titolo Originale";
	public static final String REGIA 			= "Regia";
	public static final String ANNO 			= "Anno";
	public static final String TRAMA 			= "Trama";
	public static final String LOCANDINA 		= "Path Locandina";
	public static final String GENERE 			= "Genere";
	public static final String CAST 			= "Cast";
	public static final String DURATA 			= "Durata";
	public static final String LINGUE 			= "Lingue";
	public static final String HOMEPAGE 		= "Homepage";
	public static final String PRODUZIONE 		= "Produzione";
	public static final String NAZIONE 			= "Nazione";
	public static final String DISTRIBUZIONE 	= "Distribuzione";
	public static final String LOCANDINA_GRANDE = "Locandina Grande";
	public static final String COMMENTI 		= "Commenti";
	public static final String SUPPORTO 		= "Supporto";
	public static final String WISHLIST 		= "Wishlist";
	public static final String PRESTITO 		= "Prestito";
	
	public static final String attrs[] = {
		TITOLO, REGIA, ANNO, GENERE, TITOLO_ORIGINALE, PRESTITO, WISHLIST, "Scheda"
	};
	
	HashMap<String, String> attributes;
	
	public Film() {
		attributes = new HashMap<String, String>();
	}
	
	public Film(String titolo, String regia, String anno) {
		attributes = new HashMap<String, String>();
		attributes.put(TITOLO, titolo);
		attributes.put(REGIA, regia);
		attributes.put(ANNO, anno);
	}

	public Film(FilmUPQueryResult filmUPResult) {
		attributes = new HashMap<String, String>();
		attributes.put(TITOLO, filmUPResult.titolo);
		attributes.put(REGIA, filmUPResult.regia);
		attributes.put(ANNO, filmUPResult.anno);
	}

	@Override
	public int compareTo(Film o) {
		return this.attributes.get(TITOLO).compareTo(o.attributes.get(TITOLO));
	}

	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Film) {
			Film f = (Film) obj;
			return 	attributes.get(TITOLO).equals(f.attributes.get(TITOLO)) && 
					attributes.get(REGIA).equals(f.attributes.get(REGIA)) &&
					attributes.get(ANNO).equals(f.attributes.get(ANNO));
		}
		return false;
	}
	
	@Override
	public String toString() {
		return attributes.get(TITOLO);
	}

	public static int getAttrCount() {
		return attrs.length;
	}
	
	public static String[] getAttrNames() {
		return attrs;
	}
	
	public HashMap<String, String> getAttributes() {
		return attributes;
	}
	
	public void setAttributes(HashMap<String, String> attr) {
		this.attributes = new HashMap<String, String>(attr);
	}
	
	public void set(String key, String value) {
		attributes.put(key, value);
	}
	
	public String get(String key) {
		return attributes.get(key);
	}
}
